home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
apps
/
671
/
doc
/
kompat.doc
< prev
next >
Wrap
Text File
|
1992-09-20
|
11KB
|
289 lines
=====================================================
@(#) OKAMI SHELL - KOMPATIBILITÄT
=====================================================
Stand: 15.8.92
BITTE ERST DIE DATEIN README UND OKAMI.DOC LESEN!
Diese Datei vermerkt alle Änderungen der Shell, die im weitesten Sinne zu
Inkompatibilität zu älteren Versionen führen können. Zu jeder Änderung ist
ein Datum angegeben. Es bedeutet, daß alle nach diesem Datum erstellten Ver-
sionen der Shell in dem betreffenden Punkt zu allen vor diesem Datum erstell-
ten Versionen inkompatibel sind bzw. sich anders verhalten, was Anpassungen
an Shellscripts o.ä. notwendig macht. Das Erstellungsdatum einer Shell kann
durch Eingabe von "ver -c" ermittelt werden.
========
@(#) 15.11.90
========
Das Kommando grep hat bisher nur feste Strings ohne Rücksicht auf Wildcards
gesucht und entsprach daher dem Unix-fgrep. Ab jetzt gibt es fgrep für die
Suche nach festen Strings und grep, das erweiterte Wildcards berücksichtigt.
Shellscripts, die grep zum Suchen von Strings, die Wildcards (Sterne, Frage-
zeichen und eckige Klammern) beinhalten, benutzen, sollten statt grep fgrep
benutzen. Die notwendigen Änderungen beschränken sich also auf das Hinzufügen
des "f".
========
@(#) 23.11.90
========
Ab diesem Tag betrachtet die Shell das doppelte Anführungszeichen (") als
Gruppierungssymbol, was sie in den vorigen Versionen nicht getan hat. Das
hat folgende Konsequenzen:
* Das doppelte Anführungszeichen muß, wenn es ausgegeben werden soll, mit
einem davorstehenden Dach gequotet werden. Beispiel: das Kommando
echo 3.5"-Diskette
erzeugte in früheren Versionen die Ausgabe 3.5"-Diskette. In der neueren
Version muß es heißen:
echo 3.5^"-Diskette
ABHILFE: vor jedes Anführungszeichen ein Dach setzen.
* Wenn mit dem Fluchtsymbol (^) Steuerzeichen in eine Eingabezeile aufgenommen
werden, müssen diese ebenfalls in doppelten Anführungszeichen stehen, da sie
sonst als Wort-Trennzeichen gelten. Beispiel: in
echo hallo ^n wie gehts
ist das Zeilenend-Zeichen (^n) ein Worttrenner und wird daher nicht wie in
den älteren Versionen als Zeilenvorschub ausgegeben.
ABHILFE: solche Fälle in doppelte Anführungszeichen setzen:
echo "hallo ^n wie gehts"
* Mehrere hintereinanderstehende Whitespace-Zeichen werden zu einem Leerzeichen
zusammengefaßt, wenn sie nicht in doppelten Anführungszeichen stehen. Die
älteren Versionen der Shell taten das nicht. Beispiel:
echo a b c
erzeugte in früheren Versionen die Ausgabe
a b c
, in der aktuellen Version jedoch
a b c
. Das gilt auch für die Deklaration von Shellfunktionen.
ABHILFE: auch hier in doppelte Anführungszeichen setzen:
echo "a b c"
========
@(#) 27.12.90
========
Die Umleitung der Ein- und Ausgabe erfolgt ab jetzt vollständig auf Gemdos-
Ebene mit Hilfe der Funktion Fforce. In allen älteren Versionen wurde die
Umleitung nur von der Shell selber durchgeführt.
Der Vorteil der neuen Lösung ist
1) daß sich jetzt alle externen Programme umleiten lassen, die ihre Ein- und
Ausgabe über Gemdos abwickeln, und
2) daß sich auch externe Programme, die in Shellscripts stehen, zusammen mit
den Shellscripts umleiten lassen, was vorher nicht möglich war.
Bedauerlicherweise ergeben sich dadurch auch zwei Nachteile:
*) Wenn ein Kommando eine Tastatureingabe entgegennimmt, wird das Echo der
Tasten zur Standardausgabe geschrieben. Wenn diese dabei umgeleitet wird,
kommt das Tastenecho nicht auf den Bildschirm, sondern mit in die Umlei-
tung. Beispiel: "cat >datei.txt" diente vorher dazu, die Tastatureingabe
in die Datei datei.txt umzuleiten. Jetzt kommt allerdings auch das Tasten-
echo in diese Datei.
ABHILFE: Keine, dieses Problem ist bis jetzt nicht lösbar.
*) Das Betriebssystem stellt keine Standard-Fehlerausgabe zur Verfügung, da es
die reichlich starre Organisation der "Standard-File-Handles" von MS-DOS
übernommen hat. Es gibt also eine Standard-Eingabe, eine Standard-Ausgabe,
eine Standard-serielle Schnittstelle usw. Unter Unix wird File-Deskriptor
Nr. 2 für Fehlerausgaben benutzt, diese werden mit "2>" umgeleitet. Um
dazu konform zu bleiben, benutzt die Okami-Shell ebenfalls File-Deskriptor
Nr. 2 für die Fehlerausgaben. Dies ist aber normalerweise die serielle
Schnittstelle. Die Okami-Shell biegt also zu Beginn alle Ausgaben, die auf
die Standard-serielle Schnittstelle gehen sollten, auf die Standard-Ausgabe
um. Das ist nicht allzu schlimm, da Programme, die diese Schnittstelle be-
nutzen, das sowieso über die nicht umleitbaren Xbios-Funktionen tun sollten.
Es ist aber aus einem anderen Grund schlimm: die serielle Schnittstelle
wurde bisher als NULL-Gerät benutzt. (Ein richtiges Null-Gerät hat man von
MS-DOS natürlich nicht übernommen.) Diese Möglichkeit fällt jetzt natürlich
weg, denn "rm datei 2>NULL:", womit die Fehlerausgabe von rm zum Null-Gerät
umgeleitet werden soll, schickt bei NULL=AUX: die Fehlerausgabe über die
serielle Schnittstelle (die auf den Bildschirm umgebogen wurde) genau
dahin, wo sie nicht hinsoll, nämlich auf den Bildschirm.
Um dieses Problem zu umgehen, lautet die Defaulteinstellung von NULL ab
jetzt PRN:, es wird also die paralelle Schnittstelle benutzt. Wer hier
einen Drucker angeschlossen hat, dem bringt das natürlich nicht allzu viel.
ABHILFE: wer keinen Drucker hat, kann NULL auf PRN: stehen lassen.
Wer wohl einen Drucker hat, sollte NULL auf eine Datei z.B. auf der Ram-
disk einstellen, z.B. durch die Zeile
NULL=$PIPDIR/nullfile
im Profile.
======
@(#) 2.2.91
======
Alle Funktionen, die direkt auf den Bildschirmspeicher zugreifen, arbeiten
von jetzt an mit der logischen (Logbase) anstelle mit der physikalischen
(Physbase) Bildschirmadresse. Diese sind normalerweise beide gleich, aber
die logische Adresse ist zuverlässiger, und die Benutzung der physikalischen
Adresse kann zu eigenartigen Effekten führen, wie ich bei der Arbeit am
Okami-Font-Editor festgestellt habe.
Betroffen sind die Funktionen:
fsel
getscr
putscr
sowie die Anzeige der Fileselect-Box in der Tastatureingabe mit Ctrl-F.
Dadurch sollte der eigenartige Effekt, daß putscr einen Bildschirm nicht
oder nicht vollständig wiederherstellt, behoben sein.
Probleme gibt es höchstens mit Programmen, die logische und physikalische
Adresse auf verschiedene Werte einstellen, z.B. um auf einen Bildschirm zu
zeichnen, während ein anderer angezeigt wird. Das ist aber sehr unwahrschein-
lich.
=======
@(#) 16.2.91
=======
Das Ausgabeformat von ls wurde z.T. geändert. Ab jetzt gibt ls immer relative
Dateinamen aus (früher wurden nur die Basisnamen ausgegeben). Beispiel:
"ls ../*.c" lieferte früher
sh.c
cmds.c
utl.c
und liefer jetzt
..\sh.c
..\cmds.c
..\utl.c
Daraus folgt, daß die Ausgabe eines Dateinamens nicht immer genau 14 Zeichen
(incl. Leerzeichen am Ende) lang ist, sondern beliebig variiert. Die spalten-
weise Ausgabe mit ls -C paßt sich automatisch der Dateinamenlänge an.
Programme, die auf das bisherige Ausgabeformat rechnen, müssen angepaßt werden,
wenn Dateilisten von anderen als dem aktuellen Directory verlangt werden.
Eine Möglichkeit ist das Pipen der ls-Ausgabe zu dem basename-Kommando:
ls | xargs basename
Dies funktioniert allerdings nicht mit ls -C. Um Probleme mit den Dateityp-
merkern [] (Directory) und <> (ausführbar) zu vermeiden, sollte hier auch
ls -k benutzt werden.
======
@(#) 1.3.91
======
Für den Pfad, auf dem Hilfsdateien u.ä. liegen, gibt es jetzt eine neue Shell-
variable: ETC. Dies entspricht /etc unter Unix. Die Änderung bewirkt, daß die
Datei help, die nach Eingabe des gleichnamigen Kommandos angezeigt wird,
jetzt nicht mehr auf $HOME, sondern auf $ETC erwartet wird.
ABHILFE: keine, da ETC beim Start der Shell auf denselben Wert wie HOME ge-
setzt wird. Wer allerdings ETC ändert, muß dafür sorgen, daß auch die Datei
help in das neue Verzeichnis kopiert wird.
=======
@(#) 18.4.91
=======
Die Syntax des exec-Kommandos wurde verändert: wenn mit dem Flag -x ein
zuvor geladenes Programm gestartet wird, muß jetzt der Dateiname nicht mehr
angegeben werden. Dafür können solchen Programmen ab jetzt aber auch Parameter
übergeben werden.
ABHILFE: Überall, wo `exec -x file.prg 0xabc' steht, `file.prg' streichen.
=======
@(#) 20.4.91
=======
P O R T I E R U N G
Ab heute wird die Shell mit einem neuen Compiler (Laser-C) erstellt. Erste
Versuche ergaben, daß dieser sich in Spezialfällen anders verhält als das
vorher benutzte Megamax-C. Wenn irgendwelche Dinge nicht oder nicht mehr
so wie gewohnt funktionieren, so ist das mit großer Wahrscheinlichkeit auf
solche Fälle zurückzuführen. BITTE SOFORT MELDEN!!!! Sie erhalten dann um-
gehend eine korrigierte Version.
======
@(#) 9.8.91
======
Die Shellvariablen LOGNAME und VERSION werden von der Shell nicht mehr
gesetzt. Stattdessen enthält jetzt OKAMISHELL die Versionsnummer der
Shell.
Shellscripts, die diese beiden Variablen benutzen, müssen umgeschrieben
werden: statt $LOGNAME schreibt man "Okami Shell", statt $VERSION
schreibt man $OKAMISHELL. Für beides zusammen kann man auch `ver -o`
benutzen.
=======
@(#) 31.8.91
=======
schon wieder P O R T I E R U N G
Und zwar diesmal auf Pure-C, den Nachfolger von Turbo-C.
Auch hier bitte alle Eigenartigkeiten sofort melden.
========
@(#) 27.10.91
========
Ab heute bearbeitet die Okami-Shell ihre Kommandozeile wie die Original-
Bourne-Shell, d.h. einzelne Parameter stellen die Namen von zu startenden
Shellscripts dar, es können set-Flags eingestellt werden, und ein auszu-
führendes Kommando muß nach -c stehen. Das bedeutet, daß Programme, die
die Shell auf die bisherige Weise mit Pexec aufrufen, angepaßt werden
müssen. Programme, die die Shell über _shell_p (mit der system-Funktion)
aufrufen, brauchen nicht angepaßt zu werden.
Anpassung: Vor das von der Shell auszuführende Kommando -c schreiben.
Wenn also vorher die Shell mit der Kommandozeile "ver ; read" aufge-
rufen wurde, so muß jetzt "-c ver ; read" benutzt werden.
======
@(#) 9.5.92
======
Die Shell verwendet jetzt das &-Zeichen, um Hintergrundprozesse zu starten.
Das bedeutet, daß ein & gequotet werden muß, wenn es ausgegeben werden soll.
Beispiel:
echo Meier & Co
ergab früher die Ausgabe "Meier & Co", jetzt wird "echo Meier" ausgeführt
und dann das Programm Co gesucht (und, falls gefunden, gestartet).
Abhilfe: überall, wo ein & ungequotet in einem Shellscript steht, ein ^
davorsetzen, also:
echo Meier ^& Co
oder Single-Quotes benutzen:
echo 'Meier & Co'
=======
@(#) 15.8.92
=======
Seit heute besitzt die Shell ein Kommando namens find, das dem Unix-
Original mit diesem Namen entspricht. Das vorherige Kommando namens
find wurde deswegen umbenannt in seek. Das neue find ist wesentlich
mächtiger als die bisherige Variante, aber leider nicht aufruf-
kompatibel.
Maßnahme: in allen Shellscripts nach "find" suchen und durch "seek"
ersetzen.